// 用来对axios进行封装，用起来更简单
// 封装内容
// 1.封装基地址
// 2.请求拦截器
// 3.transformResponse:大数处理
import axios from 'axios'
import store from '../store/index.js'
import jSONBigint from 'json-bigint'
import router from '../router/aut.js'
console.log('store', store)
const instance1 = axios.create({
  // 后端服务器1
  // baseURL: 'http://ttapi.research.itcast.cn',
  baseURL: 'http://toutiao-app.itheima.net',
  // baseURL: 'http://api-toutiao-web.itheima.net'
  // timeout: 1000,
  // headers: {'X-Custom-Header': 'foobar'}
  transformResponse: [function (data) {
    try {
      return jSONBigint.parse(data)
    } catch (err) {
      return data
    }
  }]
})
// 添加请求拦截器
instance1.interceptors.request.use(function (config) {
  console.log('config', config)
  config.url = config.url.replace('/app/', '/')
  // 在发送请求之前做些什么
  const token = store.state.tokenInfo.token
  if (token) {
    config.headers.Authorization = `Bearer ${token}`
  }
  return config
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error)
})
// 添加响应拦截器
instance1.interceptors.response.use(function (response) {
  // 对响应数据做点什么
  return response
}, async function (error) {
  // 对响应错误做点什么
  if (error.response.status === 401) {
    const refToken = store.state.tokenInfo.refresh_token
    if (refToken) {
      try {
        const res = await axios({
          method: 'PUT',
          url: 'http://toutiao-app.itheima.net/v1_0/authorizations',
          headers: {
            Authorization: `Bearer ${refToken}`
          }
        })
        console.log('www', res)
        store.commit('mSaveToken', {
          token: res.data.data.token,
          refresh_token: refToken

        })
        return instance1(error.config)
      } catch (err) {
        // 两个都过期了
        store.commit('mSaveToken', {})
        router.push('/login?originpath=' + encodeURIComponent(router.currentRoute.fullPath))
        console.log(err)
      }
    } else {
      store.commit('mSaveToken', {})
      router.push('/login?originpath=' + encodeURIComponent(router.currentRoute.fullPath))
    }
  }
})
export { instance1 }

// 默认导出intance1
export default instance1
